#include "CLogica.h"

CapaLogica :: CapaLogica(float aran): socios(), coches(){
    arancel=aran;
}

void CapaLogica :: ingresaSocio(Socio * socio, Coche * coche, float & ticket, TipoError & error){
    error = SIN_ERROR;

        if (socios.member(socio->getCedula())){
            error = SOCIO_YA_EXISTE;
            delete socio;
        }else{
            socios.insert(socio);
            ticket=socio->calculaTicket(arancel);
            if(socio->tipoSocio()=="Normal"&& coche != NULL)
                if (coches.member(coche->getMatricula()))
                    error = COCHE_YA_EXISTE;
                else
                    coches.insert(coche);
        }
}

Iterador * CapaLogica :: listadoSocios(){
    return socios.listadoSocios();
}

Iterador * CapaLogica :: listadoCoches(){
    return coches.listadoCoches();
}

float CapaLogica :: recaudacion(){
    return socios.recaudacion(arancel);
}

void CapaLogica :: becadoMayorVencimiento(Becado * & becado, TipoError & error){
    error = SIN_ERROR;

    bool habia;
    Socio * soc;

    socios.becadoMayorVencimiento(soc, habia);

    if(!habia)
        error = NO_EXISTE_BECADO;
    else
        becado=((Becado *) soc);
}


void CapaLogica :: datosSocio(long int ced, Socio * & socio, float & ticket, TipoError & error){
error = SIN_ERROR;

    if (!socios.member(ced))
        error = NO_EXISTE_SOCIO;
    else{
        socio = socios.find(ced);
        ticket = socio -> calculaTicket(arancel);
    }

}

void CapaLogica :: datosCoche(String mat, Coche * & coche, TipoError & error){
    error = SIN_ERROR;
    if (!coches.member(mat))
        error = NO_EXISTE_COCHE;
    else
        coche = coches.find(mat);
}

CapaLogica :: ~CapaLogica (){

}

